#include <iostream>
#include <vector>
#include <string>
#include <gtest/gtest.h>
#include <unordered_map>
using namespace std;


class MyTest : public testing::Test {
public :

    static void SetUpTestCase()  {
        cout << "所有单元测试前执行，初始化总环境!" << endl; 
        // 假设我有一个公共的测试数据容器，在这里插入的就是共同的测试数据
    }
    void SetUp() override { // 每次单元测试都会调用这个函数
        cout << "单元测试初始化!" << endl;
        _dict["hello"] = "你好";
        _dict["left"] = "左边";
        _dict["right"] = "右边";
        // 在这里插入每个单元测试所需的独立的测试数据     
    }
    void TearDown() override {
        // 在这里清理每个单元测试自己插入的数据
        _dict.clear();
        cout << "单元测试清理!" << endl;
    }

    static void TearDownTestCase() {
        // 在这里清理公共的测试数据
        cout << "所有单元测试执行完毕后执行, 清理总环境!" << endl;
    }
    unordered_map<string, string> _dict;
};

TEST_F(MyTest, insert_test) {
    _dict["apple"] = "苹果";
    ASSERT_EQ(_dict.size(), 4);
}

TEST_F(MyTest, test_size) {
    ASSERT_EQ(_dict.size(), 3);
}

int main(int argc, char* args[]) {
    testing::InitGoogleTest(&argc, args);
    RUN_ALL_TESTS();

    return 0;
}